/* 判断带头结点的循环双链表是否对称 */

#include <iostream>
#include "circledoublefun.h"
using namespace std;

// 对称型判断
int fun(DNode *L)
{
  // 指向首尾结点的指针
  DNode *p = L->next;
  DNode *q = L->prior;
  
  // 两个指针没有交汇
  while (p != q && q->next != p)
    if (p->data == q->data) // 数值相等，则继续判断
    {
      p = p->next;
      q = q->prior;
    }
    else // 否则，不对称
      return 0;
  
  // 对称
  return 1;
}

int main()
{
  // 创建循环双向链表
  DNode *A = circle_double_link_list();
  
  // 对称性判断
  cout << fun(A) << endl;
  return 0;
}